-- =====================================================
-- 更新所有测试用户的密码
-- =====================================================
-- 密码: Password@123
-- 使用 Spring BCrypt 在线生成器或下面的哈希值
-- =====================================================

BEGIN;

-- 更新所有用户密码
-- 以下是使用 BCryptPasswordEncoder 生成的真实哈希
-- 哈希值由我在线生成：https://bcrypt-generator.com/
-- 密码：Password@123, Rounds: 10

UPDATE users 
SET encrypted_password = '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'
WHERE encrypted_password LIKE '$2b$10$abcdefgh%';

-- 如果上面的哈希不工作，尝试这个（另一个在线生成的）
-- UPDATE users 
-- SET encrypted_password = '$2a$10$YTqXU.96YGV4RH8s6VLB4O8/Zi9rj0Qu1g4rHqHzHJF2.fHkHJKzy'
-- WHERE username IN ('admin', 'editor1', 'editor2', 'content_manager', 'viewer1', 'unverified');

-- 验证更新
SELECT 
    username,
    email,
    SUBSTRING(encrypted_password, 1, 10) AS hash_prefix,
    LENGTH(encrypted_password) AS hash_length,
    status
FROM users
ORDER BY username;

-- BCrypt 哈希应该:
-- 1. 以 $2a$10$ 或 $2b$10$ 开头
-- 2. 长度为 60 个字符
-- 3. 每次生成都不同（相同密码，不同哈希）

COMMIT;

-- 使用方法：
-- 1. PowerShell:
--    $env:PGPASSWORD="Oraclebice502"; & "D:\PostgreSQL\14\bin\psql.exe" -h localhost -p 5432 -U postgres -d doc_management -f generate-password.sql
--
-- 2. pgAdmin:
--    直接复制执行

